# 生成日期范围
import pandas as pd
import numpy as np
from datetime import datetime
dates = pd.date_range(start='2023-01-01', end='2023-03-31', freq='D')

# 创建示例SKU信息
sku_info = [
    {'sku': 'TS001', 'category': 'T恤', 'launch_date': '2022-03-15', 'season': 'Spring'},
    {'sku': 'JK002', 'category': '牛仔裤', 'launch_date': '2021-12-01', 'season': 'All-Season'},
    {'sku': 'CT003', 'category': '大衣', 'launch_date': '2022-10-01', 'season': 'Winter'},
    {'sku': 'DR004', 'category': '连衣裙', 'launch_date': '2023-01-01', 'season': 'Summer'},
    {'sku': 'SH005', 'category': '运动鞋', 'launch_date': '2022-06-15', 'season': 'All-Season'}
]

# 生成模拟数据
data = []
for sku in sku_info:
    base_sales = np.random.randint(20, 50)  # 基础销量
    trend = np.linspace(0, 1, len(dates))  # 线性趋势
    seasonality = np.sin(np.linspace(0, 2 * np.pi, len(dates)))  # 季节性波动

    for i, date in enumerate(dates):
        # 生成每日销量（基础销量 + 趋势 + 季节波动 + 随机噪声）
        sales = base_sales * (1 + 0.2 * trend[i] + 0.1 * seasonality[i])
        sales += np.random.normal(0, 5)
        sales = max(0, int(round(sales)))

        # 周末销量提升
        if date.weekday() >= 5:  # 周六周日
            sales = int(sales * 1.3)

        # 特殊日期处理（示例：1月10日促销）
        if date.day == 10:
            sales = int(sales * 2.5)

        data.append({
            '日期': date.strftime('%Y-%m-%d'),
            'sku': sku['sku'],
            '销量': sales,
            '商品季节': sku['season'],
            '上新日期': sku['launch_date'],
            '商品类别': sku['category']
        })

# 创建DataFrame
df = pd.DataFrame(data)

# 查看示例数据
print(df.head(10))

# 保存为CSV文件
df.to_csv('sales_demo_data.csv', index=False)